#include "Indice.h"
#include "../recursoDeAlmacenamiento/RecursoDeAlmacenamiento.h"
#include "../estrategiaAlmacenamiento/Iterador.h"

Indice::Indice(TipoClave* extractor) {
	this->extractor = extractor;
	this->vacio =  true;
}

Indice::~Indice() {
	delete this->extractor;
}

TipoClave* Indice::getExtractor() {
	return this->extractor;
}

bool Indice::estaVacio(){
	return vacio;
}

bool Indice::indexar(RecursoDeAlmacenamiento* recurso){

	Iterador* it = recurso->getIterador();
	it->reiniciarIterador();

	while (it->tieneSiguiente()) {
		offset o = it->getOffset();
		Bytes b = it->getSiguiente();
		this->agregar(extractor->crearClave(extractor->extraerClave(b)),o);
	}
	delete it;
	return true;
}

void Indice::visualizar() {

}
